\subsection[sec:memObjQuery]{內存對象的相關查詢}

對於所有型別的\cnglo{memobj}（\cnglo{bufobj}和\cnglo{imgobj}）所通用的一些資訊，
可以由以下函式獲取：

\topclfunc{clGetMemObjectInfo}

\startCLFUNC
cl_int clGetMemObjectInfo (cl_mem memobj,
			cl_mem_info param_name,
			size_t param_value_size,
			void *param_value,
			size_t *param_value_size_ret)
\stopCLFUNC

\carg{memobj} 指定所要查詢的\cnglo{memobj}。

\carg{param_name} 指定要查詢什麼資訊。
所支持資訊的種類以及 \carg{param_value} 中返回的內容如\reftab{meminfo}所示。

\carg{param_value} 指向的內存用來存儲查詢結果。如果是 \cmacro{NULL}，則忽略。

\carg{param_value_size} 即 \carg{param_value} 所指內存塊的大小（單位：字節）。
其值必須 >= \reftab{meminfo}中返回型別的大小。
如果 \carg{param_value} 是 \cmacro{NULL}，則忽略。

\carg{param_value_size_ret} 會返回查詢結果的實際大小。如果是 \cmacro{NULL}，則忽略。

如果執行成功，\capi{clGetMemObjectInfo} 會返回 \cenum{CL_SUCCESS}。
否則，返回下列錯誤碼之一：
\startigBase
\item \cenum{CL_INVALID_VALUE}，如果 \carg{param_name} 不在支持之列，
或者 \carg{param_value_size} 的值 < \reftab{meminfo}中返回型別的大小
且 \carg{param_value} 不是 \cmacro{NULL}。

\item \cenum{CL_INVALID_MEM_OBJECT}，如果 \carg{memobj} 無效。
\item \cenum{CL_OUT_OF_RESOURCES}，如果\scdevfailres。
\item \cenum{CL_OUT_OF_HOST_MEMORY}，如果\schostfailres。
\stopigBase

\placetable[here][tab:meminfo]
{\capi{clGetMemObjectInfo}所支持的\carg{param_names}}
{\input{chapter_rt/tbl/tbl_memobj_info.tex}}
